home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / SIMPLE.ASM < prev    next >
Assembly Source File  |  1998-03-06  |  4KB  |  121 lines

  1. ;-----------------------------------------------------
  2. ; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ  ó αѪ¿¼Ñ  »α«ßΓ«⌐ ºá¼Ñ¡δ
  3. ; ß«ú½áß¡« ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
  4. ; --------> ñ½∩ 16-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <--------
  5. ; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
  6. ; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
  7. ;-----------------------------------------------------
  8. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  9. ; æ¼ÑΘÑ¡¿Ñ  ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  10. ; NEAR FAR
  11. ;  2    4      4      FAR-áñαÑß ¬½ετá
  12. ;  6    8      4      FAR-áñαÑß í½«¬á ñá¡¡δσ
  13. ; 10   12      4      FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  14. ; 14   16      2      è«½¿τÑßΓó« Φ¿ΣαπѼδσ í½«¬«ó
  15. ;*16   18      2     ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
  16. ;                   (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
  17. ;-----------------------------------------------------
  18. ; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
  19. ; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ  ¡á »Ñαóδ⌐ íá⌐Γ
  20. ;   »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
  21. ; - áñαÑßá ¬½ετá ¿ Γáí½¿µδ ºá¼Ñ¡ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
  22. ; - ßτÑΓτ¿¬ Φ¿ΣαπѼδσ í½«¬«ó αáóÑ¡ 0;
  23. ;-----------------------------------------------------
  24. ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
  25. ;-----------------------------------------------------
  26. ; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
  27. ; - æ¿¼ó«½ KeySize:
  28. ; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
  29. ;    ¬½ετ αẼÑα«¼ ó 32 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γá;
  30. ; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
  31. ;    Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
  32. ;    ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
  33. ; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
  34. ;    αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
  35. ;    Σπ¡¬µ¿¿.
  36. ;------------------------------------------------------
  37. ; çá¼Ñτá¡¿∩:
  38. ; 1.çáΦ¿Σα«óá¡¿Ñ ¿½¿  αáßΦ¿Σα«óá¡¿Ñ ºáñáÑΓß∩ »ÑαÑñáτÑ⌐
  39. ; ß««ΓóÑΓßΓóπεΘÑú«  áñαÑßá  ¬½ετá - »«α∩ñ«¬  φ½Ñ¼Ñ¡Γ«ó
  40. ; ó   ¬½ετáσ  ºáΦ¿Σα«óá¡¿∩  ¿  αáßΦ¿Σα«óá¡¿∩   óºá¿¼¡«
  41. ; «íαáΓ¡δ⌐.
  42. ; 2.æ«ú½áß¡«  âÄæÆ 28147-89  φë༫ñπ½∞ ¼«ªÑΓ ¿ß»«½∞-
  43. ; º«óáΓ∞ß∩ Γ«½∞¬«  ñ½∩ Φ¿Σα«óá¡¿∩  ¬½ετÑó«⌐ ¿¡Σ«α¼áµ¿¿
  44. ; (¿  ß¿¡σα«»«ß佬¿  ñ½∩  úá¼¼¿α«óá¡¿∩).
  45. ;-----------------------------------------------------
  46. ;
  47. wptr    EQU     <word ptr>
  48. ;
  49. IFNDEF KeySize
  50. _keysize EQU    32      ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  51. ELSE
  52. IFDIF KeySize,<>
  53. _keysize EQU    KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  54. ENDIF
  55. ENDIF
  56. ;
  57.         .model  small,C
  58.         .code    $gost
  59.     extrn    gost:near
  60. simple  proc
  61.         public  simple
  62. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  63.         a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  64. IF      (TYPE simple) EQ 0FFFEh
  65.         a=a+2           ; Ñß½¿ simple - far-»α«µÑñπαá
  66. ENDIF
  67. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  68. ;
  69. key=    2+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ¬½ετá
  70. syn=    6+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ñá¡¡δσ
  71. chg=    10+a            ; ß¼ÑΘÑ¡¿Ñ áñαÑßá Γáí½. ºá¼Ñ¡
  72. len=    14+a            ; ß¼ÑΘÑ¡¿Ñ ßτÑΓτ¿¬á í½«¬«ó
  73. IFNDEF _keysize
  74. keylen= 16+a
  75. ENDIF
  76. ;
  77. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ó ß««ΓóÑΓßΓó¿¿ ß ß«ú½. Turbo C
  78.     push    BP
  79.     push    DS    ; φΓ« ¡Ñ óßÑúñá «í∩ºáΓѽ∞¡«
  80.     push    SI
  81.     push    DI
  82. ; ìáßΓα«⌐¬á αáí«τ¿σ αÑú¿ßΓα«ó
  83.         mov     BP,SP       ; ßΓφ¬«óδ⌐ ¬áñα
  84.         lds     BX,chg[BP]  ; Γáí½¿µá ºá¼Ñ¡
  85. ; çáúαπº¬á  í½«¬á  ó  αÑú¿ßΓαδ
  86. circle: les     SI,syn[BP]  ; ºáúαπº¬á áñα.ß-»«c佬¿
  87.     mov     AX,ES:[SI]  ; AX <- ¼½áñΦÑÑ ß½«ó« N1
  88.         mov     DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« N1
  89.         mov     DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« N2
  90.         mov     CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« N2
  91. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ »α«ßΓπε ºá¼Ñ¡π
  92.         les     SI,key[BP]
  93. IFDEF _keysize
  94.         mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  95.         mov     CX,_keysize ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  96. ELSE
  97.         mov     BP,keylen[BP];CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  98.         xchg    BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  99. ENDIF
  100.         call    gost
  101.     mov     CX,BP
  102.     mov     BP,SP
  103. ; çỿß∞  αѺπ½∞ΓáΓá  ¡á  ¼ÑßΓ«
  104.         les     SI,syn[BP]  ; ºáúαπº¬á  áñαÑßá  ß¿¡σα«»«»δ½¬¿
  105.         mov     ES:[SI],DI  ; º á ¡ « ß ¿ ¼
  106.         mov     ES:2[SI],CX ;    α Ñ º π ½ ∞ Γ á Γ
  107.         mov     ES:4[SI],AX ;       ¡ á     Ñ ú «
  108.         mov     ES:6[SI],DX ;          ¼ Ñ ß Γ « !!!
  109. ; Åα«óÑα¬á ¡á ¬«¡Ñµ µ¿¬½á
  110.     add     wptr syn[BP],8; ¬«ααѬµ¿∩ áñαÑßᠡạ.
  111.         dec     wptr len[BP]; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  112.     jnz     circle      ; µ¿¬½¿¼ß∩
  113. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó
  114.     pop    DI
  115.     pop    SI
  116.     pop    DS
  117.     pop    BP
  118.     ret
  119. simple  endp
  120.     end
  121.